#!/bin/bash

# ===============================================
# Nacos 2.0.3 稳定启动脚本（适用于 macOS/Linux + Docker Desktop）
#
# 目录结构:
#   /Users/xuyudong/Applications/docker/nacos/
#   ├── start-nacos.sh             - nacos v2.1.2 容器启动脚本
#   ├── reset-namespace-and-import-config-nacos.sh   - 刷namespace及配置脚本
#   ├── debug.sh   - curl 调试 OpenAPI
#   ├── v1.3.7/                    - 版本号命名的配置目录
#   │   ├── dev-local/             - 命名空间下的配置文件目录
#   │   │   ├── DEFAULT_GROUP/     - 默认分组的配置文件目录
#   │   │   └── SEATA_GROUP/       - SEATA分组的配置文件目录
#   │   ├── ert/                   - 命名空间下的配置文件目录
#   │   │   └── DEFAULT_GROUP/     - 默认分组的配置文件目录
#   │   ├── yudao/                 - 命名空间下的配置文件目录
#   │   │   └── DEFAULT_GROUP/     - 默认分组的配置文件目录
# ===============================================

CONTAINER_NAME="nacos-server"

# 本地挂载目录（请确保这些目录已存在）
BASE_DIR="/Users/xuyudong/Applications/docker/nacos"
DATA_DIR="$BASE_DIR/data"
LOGS_DIR="$BASE_DIR/logs"
CONFIG_DIR="$BASE_DIR/conf"
# 检查容器是否存在
EXISTS=$(docker ps -a --format '{{.Names}}' | grep -w "$CONTAINER_NAME")

if [ -n "$EXISTS" ]; then
    STATUS=$(docker inspect -f '{{.State.Status}}' "$CONTAINER_NAME")
    if [ "$STATUS" == "running" ]; then
        echo "✅ Nacos 容器 [$CONTAINER_NAME] 已经在运行中，准备停止并删除现有容器..."
        # 停止并删除容器
        docker stop "$CONTAINER_NAME"
        docker rm "$CONTAINER_NAME"
        echo "🚫 已停止并删除现有的 Nacos 容器 [$CONTAINER_NAME]，准备重新创建..."
    else
        echo "🔄 Nacos 容器 [$CONTAINER_NAME] 存在但未运行，尝试启动中..."
        docker start "$CONTAINER_NAME"
    fi
else
    echo "🚀 Nacos 容器 [$CONTAINER_NAME] 不存在，准备创建并启动..."
fi

echo " 拉取镜像成功，准备启动容器..."
# 拉起新的容器
docker run -d \
  -p 8848:8848 -p 9848:9848 -p 9555:9555 \
  --name "$CONTAINER_NAME" \
  -e MODE=standalone \
  -v "$DATA_DIR":/home/nacos/data \
  -v "$LOGS_DIR":/home/nacos/logs \
  -v "$CONFIG_DIR":/home/nacos/conf \
  --restart on-failure \
  nacos/nacos-server:v2.3.1-slim

echo "✅ Nacos 容器已创建并启动成功，并挂载了持久化目录："
echo "📦 数据目录: $DATA_DIR"
echo "📦 日志目录: $LOGS_DIR"
echo "📦 配置目录: $CONFIG_DIR"
